const express = require('express');
const bodyParser = require('body-parser');
const mysql = require('mysql');

// 创建express应用
const app = express();

// 使用中间件解析请求体
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));

// 创建MySQL连接配置
const connection = mysql.createConnection({
  host: 'localhost',     // MySQL服务器地址
  port: 3306,           // MySQL端口号
  user: 'root',         // MySQL用户名
  password: 'root',   // MySQL密码
  database: 'user'      // 数据库名称
});

// 连接到MySQL数据库
connection.connect(error => {
  if (error) {
    console.error('连接数据库失败：', error);
    process.exit(1);  // 如果连接失败，终止程序
  }
  console.log('成功连接到MySQL数据库');
});

// 添加数据库连接错误监听
connection.on('error', (err) => {
  console.error('数据库错误：', err);
  if (err.code === 'PROTOCOL_CONNECTION_LOST') {
    console.error('数据库连接丢失');
  } else {
    throw err;
  }
});

// 进程退出时关闭数据库连接
process.on('SIGINT', () => {
  connection.end((err) => {
    console.log('关闭数据库连接');
    process.exit(err ? 1 : 0);
  });
});

// 设置服务器端口
const PORT = process.env.PORT || 3000;

// 测试路由
app.get('/test', (req, res) => {
  try {
    connection.query('SELECT 1 + 1 AS solution', (error, results) => {
      if (error) {
        console.error('查询错误：', error);
        return res.status(500).json({ error: '数据库查询失败' });
      }
      res.json({ 
        message: '服务器连接成功',
        dbConnection: '数据库连接正常',
        test: results[0].solution 
      });
    });
  } catch (err) {
    console.error('路由错误：', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 添加新的测试路由
app.post('/api/data', (req, res) => {
  try {
    const { name } = req.body;
    const query = 'INSERT INTO test_table (name) VALUES (?)';
    
    connection.query(query, [name], (error, results) => {
      if (error) {
        console.error('插入数据错误：', error);
        return res.status(500).json({ error: '数据插入失败' });
      }
      res.json({ 
        message: '数据插入成功',
        id: results.insertId
      });
    });
  } catch (err) {
    console.error('路由错误：', err);
    res.status(500).json({ error: '服务器错误' });
  }
});

// 添加404处理
app.use((req, res) => {
  res.status(404).json({ error: '未找到请求的资源' });
});

// 启动服务器
app.listen(PORT, () => {
  console.log(`服务器运行在端口 ${PORT}`);
}); 